package com.zenithmind.mall.service;

/**
 * 商品统计服务接口 - 遵循接口隔离原则，专门负责商品统计相关操作
 * 
 * @author ZenithMind Team
 * @since 2025-07-03
 */
public interface ProductStatisticsService {

    /**
     * 增加商品浏览量
     * 
     * @param id 商品ID
     */
    void increaseViewCount(String id);

    /**
     * 增加商品销量
     * 
     * @param id 商品ID
     * @param quantity 销售数量
     * @return 操作结果
     */
    Boolean increaseSalesCount(String id, Integer quantity);

    /**
     * 增加商品收藏量
     * 
     * @param id 商品ID
     * @return 操作结果
     */
    Boolean increaseFavoriteCount(String id);

    /**
     * 减少商品收藏量
     * 
     * @param id 商品ID
     * @return 操作结果
     */
    Boolean decreaseFavoriteCount(String id);

    /**
     * 更新商品评分
     * 
     * @param id 商品ID
     * @param rating 评分
     * @return 操作结果
     */
    Boolean updateProductRating(String id, Double rating);

    /**
     * 获取商品浏览量
     * 
     * @param id 商品ID
     * @return 浏览量
     */
    Integer getViewCount(String id);

    /**
     * 获取商品销量
     * 
     * @param id 商品ID
     * @return 销量
     */
    Integer getSalesCount(String id);

    /**
     * 获取商品收藏量
     * 
     * @param id 商品ID
     * @return 收藏量
     */
    Integer getFavoriteCount(String id);

    /**
     * 获取商品平均评分
     * 
     * @param id 商品ID
     * @return 平均评分
     */
    Double getAverageRating(String id);

    /**
     * 批量更新商品统计数据
     * 
     * @return 更新结果
     */
    Boolean batchUpdateStatistics();

    /**
     * 重新计算商品统计数据
     * 
     * @param id 商品ID
     * @return 操作结果
     */
    Boolean recalculateStatistics(String id);

    /**
     * 获取商品统计报告
     * 
     * @param id 商品ID
     * @return 统计报告
     */
    Object getStatisticsReport(String id);
}
